/**
 * 微信接口数据
 */
// 跳转到其它小游戏
// "navigateToMiniProgramAppIdList": [
//     "wx9759f37075f1026b"
//   ]
// var userData = require("UserData");
 var wxInterface = cc.Class({
    statics: {
        instance: null
    },
    extends: cc.Component,

    properties: {
        isLogined:false,
        histroyScore:0, //历史最高分数
    },

    // LIFE-CYCLE CALLBACKS:

    ctor() {
    },
    wxLogin(successCB, failCB){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            if(successCB)
                successCB();
            return;
        }
        wx.login({success: function(res) {
            console.log("wx.login success! " + res.code);
            if(successCB)
                successCB(res.code);
            }.bind(this),
            fail: function (res) {
                console.log("wx.login fail! " + res);
                if(failCB)
                    failCB();
            }.bind(this)
        });
    },
    //获取用户信息
    getUserInfo(successCB){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            if(successCB)
                successCB();
            return;
        }
        if(!this.button){
            var frameSize = cc.view.getFrameSize();
            this.button = wx.createUserInfoButton({
                // type: 'text',
                // text: '进入游戏',
                type:'image',
                image:'play.png',
                style: {
                    left: frameSize.width/2 - 75/2,
                    top:  frameSize.height/2 - 75/2,
                    width: 75,
                    height:75,
                    lineHeight: 45,
                    backgroundColor: '#000000cc',
                    color: '#ffffffcc',
                    textAlign: 'center',
                    fontSize: 16,
                    borderRadius: 6
                }
            });
        }
        this.button.show();
        console.log("*********** show getUserInfo Button");
        this.button.onTap((res) => {
            this.button.hide();
            if(successCB)
                successCB(res)
        });
    },
    hideUserInfoBtn(){
        if(this.button){
            this.button.hide();
        }
    },
    //向开放域 发送消息
    //obj 的格式是 
    //      {
    //         type:  "0", 
    //      }
    wxPostMsg(obj){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        // wx.postMessage({
        //     type:  "0", //刷新
        // }); 
        wx.postMessage(obj);  
    },
    //设置微信数据
    setWXData(score, score_2){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        wx.setUserCloudStorage({
            KVDataList: [
                            { key: 'score', value: ""+score },
                            { key: 'score_2', value: ""+score_2 }
                        ],
            success: res => {
                console.log("setWXData success:" + res);
            },
            fail: res => {
                console.log("setWXData fail: " + res);
            }
        });
    },
    //向开放域发送消息
    postMsg(obj){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        wx.postMessage(obj);

        // wx.postMessage({
        //     "type":  "1", //刷新
        // });  
    },
    //设置右上角的分享按钮
    showShareMenu(){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        console.log("设置分享");
        wx.showShareMenu();
        wx.onShareAppMessage(function () {
            return {
            title: '不抛弃、不放弃、加油！',
            imageUrl: 'share.jpg',
            query:"test=1&a=1"
            }
        })
    },
    //分享 不抛弃、不放弃、加油！
    sendShareMsg(title){ 
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        wx.shareAppMessage({
            // title: '回味经典 重温童年 一起来战！',
            title: title,
            // imageUrl:img
            imageUrl:'share.jpg'
        })
    },
    //打开其它游戏
    openOtherGame(appID, successCB, failCB){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        wx.navigateToMiniProgram({
            appId: appID,
            path: '',
            extraData: {
              test: '1'
            },
            envVersion: 'release',
            success(res) {
              // 打开成功
              if(successCB)
                 successCB(res);
            },
            fail(res){
                if(failCB)
                    failCB(res);
            }
          })
    },
    //banner 广告
    createBannerAD(adID, left, top, width){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        var frameSize = cc.view.getFrameSize();
        console.log("frameSize: " + frameSize.height);
        var bannerAd = wx.createBannerAd({
            // adUnitId: 'adunit-ca30fa67782fabd0',
            adUnitId: adID,
            style: {
                left : (frameSize.width-width)/2,
                top  : (frameSize.height - top),
                width: width,
                // left: 20,
                // top: frameSize.height - 130,
                // width: 300
            }
        })
        bannerAd.onError(err => {
            console.log("banner 播放错误！" + err);
            
        })
        bannerAd.onLoad(() => {
            console.log('banner 广告加载成功')
        });
        bannerAd.show().catch(err => console.log("banner 播放错误：" + err));
        return bannerAd;
    },
    //视频 广告
    createVideoAD(adID, funcCB, cancelCB){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            if(funcCB){
                funcCB();
            }
            return;
        }
        var self = this;
        if(this.videoAd){
            this.videoAd.offClose();
        }
        let videoAd = wx.createRewardedVideoAd({
            adUnitId: adID
        })
        this.videoAd = videoAd;
        videoAd.load()
        .then(() => videoAd.show())
        .catch(err => {
            videoAd.load()
            .then(() => videoAd.show())
        })
        videoAd.onError(err => {
            console.log(err)
            var ctx = cc.find("Canvas");    
            var uiMgr = ctx.getComponent("UIManager");
            uiMgr.showTip("广告播放错误！请稍后从新尝试", function(){
                cc.director.resume();
                if(cancelCB){
                    cancelCB();
                }
            });
        })
        //播放完毕
        videoAd.onClose(res => {
            // 用户点击了【关闭广告】按钮
            // 小于 2.1.0 的基础库版本，res 是一个 undefined
            if (res && res.isEnded || res === undefined) {
                // 正常播放结束，可以下发游戏奖励   复活
                if(funcCB){
                    funcCB();
                }
            }
            else {
                // 播放中途退出，不下发游戏奖励
                if(cancelCB){
                    cancelCB();
                }
            }
        })
    },
    //检测更新
    checkUpdate(){
        if( cc.sys.browserType != cc.sys.BROWSER_TYPE_WECHAT_GAME){
            return;
        }
        // wx.getUpdateManager 在 1.9.90 才可用，请注意兼容
        const updateManager = wx.getUpdateManager()
          
        updateManager.onCheckForUpdate(function (res) {
           // 请求完新版本信息的回调
           console.log("hasUpdate: " + res.hasUpdate)
        })
          
        updateManager.onUpdateReady(function () {
           wx.showModal({
             title: '更新提示',
             content: '新版本已经准备好，是否马上重启小程序？',
             success: function (res) {
               if (res.confirm) {
                 // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                 updateManager.applyUpdate()
               }
             }
           })
         })
          
        updateManager.onUpdateFailed(function () {
           // 新的版本下载失败
        })
    },

});

wxInterface.instance = new wxInterface();
module.exports = wxInterface;